Рассмотрим
последовательность 1, 12, 123, 1234, 12345, 123456, 1234567, 12345678,
123456789, 12345678910, 1234567891011, ....
Подсчитайте,
сколько элементов этой последовательности среди первых n делятся на три.
Вход. Одно натуральное число n (1 ≤ n ≤ 231
– 1).
Выход. Выведите одно
найденное число.
Пример
входа |
Пример
выхода |
4 |
2 |
математика
Анализ алгоритма
Пронумеруем
элементы последовательности: a1
= 1, a2 = 12, a3 = 123, … . Посмотрим,
какие числа последовательности делятся на 3:
Можно заметить,
что на 3 делятся элементы ai,
где i mod 3 ≠ 1.
Если n mod 3 = 0, то количество элементов в
последовательности a1, a2, …, an делится на 3. Среди них имеется в точности n / 3 * 2 таких, что делятся на 3.
При n mod 3 = 1 количество делящихся на 3
элементов будет n / 3 * 2, а при n mod 3 = 2 их будет n / 3 * 2 + 1.
Реализация алгоритма
Читаем значение n.
scanf("%d",&n);
Вычисляем и выводим ответ.
res = n / 3 * 2;
if (n % 3 == 2) res++;
printf("%d\n",res);
Python реализация
Читаем значение n.
n = int(input())
Вычисляем и выводим ответ.
res = (n // 3) * 2
if n % 3 == 2: res
+= 1
print(res)